/*
 *  Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  See the NOTICE file distributed with
 *  this work for additional information regarding copyright ownership.
 *  The ASF licenses this file to You under the Apache License, Version 2.0
 *  (the "License"); you may not use this file except in compliance with
 *  the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

package javax.security.auth.x500;

import java.security.cert.X509Certificate;
import java.security.PrivateKey;
import javax.security.auth.Destroyable;

import org.apache.harmony.auth.internal.nls.Messages;

public final class X500PrivateCredential implements Destroyable {

    //X509 certificate
    private X509Certificate cert;

    //Private key
    private PrivateKey key;

    //Alias
    private String alias;

    public X500PrivateCredential(X509Certificate cert, PrivateKey key) {
        super();
        if (cert == null) {
            throw new IllegalArgumentException(Messages.getString("auth.28")); //$NON-NLS-1$
        }
        if (key == null) {
            throw new IllegalArgumentException(Messages.getString("auth.29")); //$NON-NLS-1$
        }
        this.cert = cert;
        this.key = key;
    }

    public X500PrivateCredential(X509Certificate cert, PrivateKey key, String alias) {
        this(cert, key);
        if (alias == null) {
            throw new IllegalArgumentException(Messages.getString("auth.2A")); //$NON-NLS-1$
        }
        this.alias = alias;
    }

    public X509Certificate getCertificate() {
        return cert;
    }

    public PrivateKey getPrivateKey() {
        return key;
    }

    public String getAlias() {
        return alias;
    }

    public void destroy() {
        cert = null;
        key = null;
        alias = null;
    }

    public boolean isDestroyed() {
        return (cert == null && key == null && alias == null);
    }
}
